<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
</head>
<body>
      <script>
            function foo(){

            }
            // 其实构造函数就是普通函数在调用的时候前面加了一个new关键字;
            // 返回值不同 : 普通函数的返回值依赖 return ;
            //              构造函数的返回值 构造的 "实例对象" ;
            // var res1 = foo();
            // console.log(res1);
            // var instance = new foo();
            // console.log(instance);

            // 规范 : 你可以不遵守，没有啥太严重的后果; 
            // 规定 : 如果不遵守, 程序就会报错; 

            // 规范 : 构造函数的命名规范;
            // 1. 首字母大写;
            // function Foo(){

            // }
            // var instance = new Foo();
            // console.log(instance);
            // 数据存储结构 : 增 , 删 , 改 , 查;

            // 2. 在构造函数之中向实例对象之中写入数据;
            // 构造函数相当于家族关系之中的父母;
            // 实例对象相当于家族关系之中的孩子;
            // 一对父母不变;
            // 孩子我们可以有很多;

            // function Foo(){
            //       this.a = 10;
            // }
            // // 3. 构造函数里的this;
            // // 现有 this 再返回; 我们可以在构造函数里面操作实例对象;
            // var instance = new Foo();
            // console.log(instance);

            // 3. 可以改变数据的实例对象;
            function Parent( name , date ){
                  this.name = name;
                  this.date = date;
            }
            var son1 = new Parent( "钢蛋" , "2020/06/06" );
            var son2 = new Parent( "二狗" , "2020/07/06" ) ;

            console.log( son1 , son2 )

      </script>
</body>
</html>